#pragma once

#include <memory>

#include <QMainWindow>
#include <QLineEdit>
#include <QLabel>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QTimer>
#include <QWidget>
#include <QSizePolicy>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QString>

#include "CountdownWidget.h"
#include "../core/WordCache.h"
#include "../core/WordReport.h"

class WordsSolitaire : public QWidget
{
    Q_OBJECT

public:
    WordsSolitaire();
    ~WordsSolitaire();

private:
    std::shared_ptr<QLineEdit> inputLineEdit;
    std::shared_ptr<QPlainTextEdit> textEdit;
    std::shared_ptr<QHBoxLayout> mainLayout;
    std::shared_ptr<QVBoxLayout> leftLayout;
    std::shared_ptr<CountdownWidget> countdownWidget;
    std::shared_ptr<QPushButton> calculateButton;
    std::shared_ptr<QPushButton> clearButton;

    std::shared_ptr<WordCache> wordCache;
    std::shared_ptr<WordReport> wordReport;
};
